home *** CD-ROM | disk | FTP | other *** search
/ Amiga CD-Sensation: Golden Games / Amiga CD-Sensation - Ausgabe 2 - Golden Games (1996)(GTI - Schatztruhe)(DE)[!].iso / Brain Activity / 10000 / src / 10000AMI.H < prev    next >
C/C++ Source or Header  |  1995-12-06  |  7KB  |  229 lines

  1. /* The routines listed below are specific to an Amiga using the GWIN.library.
  2.    See dox for further details.
  3.  
  4.    This header file is (C)1995 D.R. Commander and Titane-Mammoth Productions */
  5.  
  6. #include "gwin.user.h"
  7.  
  8. /*** CHECKS TO SEE IF A KEY IS WAITING IN THE INPUT STREAM (FOR ABORTING
  9.      COMPUTER-PLAYED GAMES ***/
  10. int 
  11. checkinput (void)
  12. {
  13.   float x, y;
  14.   struct uuevent uuev;
  15.   ugrina (G, &x, &y, &uuev);
  16.   return ((int) (toupper (uuev.key)) - 48);
  17. }
  18.  
  19. /*** FETCH A MOUSE CLICK OR KEYPRESS ***/
  20. int 
  21. getinput (void)
  22. {
  23.   float x, y;
  24.   struct uuevent uuev;
  25.   ugrinc (G, &x, &y, &uuev);
  26.   return ((int) (toupper (uuev.key)) - 48);
  27. }
  28.  
  29. /*** CLEAR SCREEN ***/
  30. void 
  31. cls (void)
  32. {
  33.   upset (G, "ccol", 0.0);
  34.   uerase (G);
  35. }
  36.  
  37. /*** PROMPTS THE USER FOR INPUT ON ROW n (DISPLAYS REQUESTER) ***/
  38. void 
  39. prompt (int line, char prompt[], char response[], int length)
  40. {
  41.   float width = ((float) strlen (prompt) + 2.) * 1.25;
  42.   char text[255];
  43.   if (line % 26 > 21)
  44.     line = 21;
  45.   ugetstring (G, 50. - width / 2., 96.0 - (float) (line % 26 - 1) * 4.0, width, prompt, text);
  46.   strncpy (response, text, length);
  47.   response[length] = '\0';
  48. }
  49.  
  50. /*** CHANGE THE CURRENT TEXT COLOUR ***/
  51. void 
  52. colour (int fg, int bg)
  53. {
  54.   upset (G, "colo", (float) fg);
  55.   upset (G, "bcol", (float) bg);
  56. }
  57.  
  58. /*** DISPLAY A LINE OF TEXT AT A SET CURSOR POSITION ***/
  59. void 
  60. display (int vpos, int hpos, char input[])
  61. {
  62.   float x = (float) ((hpos - 1) % 80) * 1.25 + .1, y = 96.0 - (float) ((vpos - 1) % 25) * 4.0;
  63.   umove (G, x, y);
  64.   uprnt1 (G, "text", input);
  65. }
  66.  
  67. /*** DISPLAY AN INTEGER AT A SET CURSOR POSITION ***/
  68. void 
  69. displayint (int vpos, int hpos, int input)
  70. {
  71.   char temp[80];
  72.   int len;
  73.   float x = (float) ((hpos - 1) % 80) * 1.25 + .1, y = 96.0 - (float) ((vpos - 1) % 25) * 4.0;
  74.   len = stci_d (temp, input);
  75.   temp[len] = '\0';
  76.   umove (G, x, y);
  77.   uprnt1 (G, "text", temp);
  78. }
  79.  
  80. /*** PAUSE FOR A MOUSE CLICK ***/
  81. void 
  82. pause (void)
  83. {
  84.   float x, y;
  85.   void centre (int line, char text[]);
  86.   void clear (int line);
  87.   centre (25, "°±² BANG THE LEFT MOUSE BUTTON TO CONTINUE ²±°");
  88.   ugrin (G, &x, &y);
  89.   clear (25);
  90. }
  91.  
  92. /*** CLEAR ONE LINE OF THE DISPLAY ***/
  93. void 
  94. clear (int line)
  95. {
  96.   colour (0, 0);
  97.   display (line, 1, "                                                                                ");
  98. }
  99.  
  100. /*** CLEAR LINES m THROUGH n ***/
  101. void 
  102. clearlines (int m, int n)
  103. {
  104.   int i;
  105.   colour (0, 0);
  106.   for (i = m; i <= n; i++)
  107.     {
  108.       display (i, 1, "                                                                                ");
  109.     }
  110. }
  111.  
  112. /*** POP A YES/NO REQUESTER AND RETURN TRUE OR FALSE BASED ON THE ANSWER ***/
  113. int 
  114. ask (int line, char question[])
  115. {
  116.   float width = ((float) strlen (question) + 4.) * 1.25;
  117.   return (uyorn (G, question, "Maybe so", "Guess not", width, 50.));
  118. }
  119.  
  120. /*** SET UP A 640x200x16 SCREEN WITH THE PROPER IBM PALETTE AND FONT ***/
  121. void 
  122. setupamigascreen (void)
  123. {
  124.   USTART ("high1.backdrop", 0., 640., 0., 200.);
  125.   usetrgb (G, 0., 0., 0., 0.);
  126.   usetrgb (G, 1., 10., 0., 0.);
  127.   usetrgb (G, 2., 0., 10., 0.);
  128.   usetrgb (G, 3., 10., 6., 0.);
  129.   usetrgb (G, 4., 0., 0., 10.);
  130.   usetrgb (G, 5., 10., 0., 10.);
  131.   usetrgb (G, 6., 0., 10., 10.);
  132.   usetrgb (G, 7., 11., 11., 11.);
  133.   usetrgb (G, 8., 6., 6., 6.);
  134.   usetrgb (G, 9., 15., 0., 0.);
  135.   usetrgb (G, 10., 0., 15., 0.);
  136.   usetrgb (G, 11., 15., 15., 0.);
  137.   usetrgb (G, 12., 0., 0., 15.);
  138.   usetrgb (G, 13., 15., 0., 15.);
  139.   usetrgb (G, 14., 0., 15., 15.);
  140.   usetrgb (G, 15., 15., 15., 15.);
  141.   ufont (G, "CleanIBM.font", 8.);
  142. }
  143.  
  144. /*** DRAW THE EVEN MORE BOFFO INTRO PIC ***/
  145. void 
  146. drawpic (void)
  147. {
  148.   uset (G, "fill");
  149.   upset (G, "colo", 7.);
  150.   urect (G, .625978, 98.994974, 99.374026, 55.276383);
  151.   upset (G, "colo", 15.);
  152.   urect (G, 0., 100., 100., 99.497492);
  153.   urect (G, 0., 98.994974, .469484, 54.271360);
  154.   upset (G, "colo", 8.);
  155.   urect (G, .625978, 54.773870, 100., 54.271360);
  156.   urect (G, 99.530520, 100., 100., 55.276383);
  157.   upset (G, "colo", 5.);
  158.   urect (G, 1.564945, 86.432162, 17.370892, 65.326632);
  159.   upset (G, "colo", 6.);
  160.   urect (G, 21.283255, 86.432162, 37.089204, 65.326632);
  161.   upset (G, "colo", 2.);
  162.   urect (G, 41.001565, 86.432162, 56.807511, 65.326632);
  163.   upset (G, "colo", 3.);
  164.   urect (G, 60.719876, 86.432162, 76.525820, 65.326632);
  165.   upset (G, "colo", 1.);
  166.   urect (G, 80.438189, 86.432162, 96.244135, 65.326632);
  167.   upset (G, "colo", 13.);
  168.   urect (G, 4.068858, 89.447237, 19.561816, 68.844225);
  169.   upset (G, "colo", 14.);
  170.   urect (G, 23.787167, 89.447237, 39.280126, 68.844225);
  171.   upset (G, "colo", 10.);
  172.   urect (G, 43.505479, 89.447237, 58.998437, 68.844225);
  173.   upset (G, "colo", 11.);
  174.   urect (G, 63.223786, 89.447237, 78.716746, 68.844225);
  175.   upset (G, "colo", 9.);
  176.   urect (G, 82.942103, 89.447237, 98.435053, 68.844225);
  177.   upset (G, "colo", 0.);
  178.   urect (G, 7.981221, 87.939699, 13.302035, 86.934679);
  179.   urect (G, 10.328638, 86.432162, 13.302035, 71.859301);
  180.   urect (G, 7.981221, 71.356783, 15.649452, 70.351763);
  181.   urect (G, 25.821597, 87.939699, 37.245698, 70.351763);
  182.   urect (G, 45.383412, 87.939699, 56.964006, 70.351763);
  183.   urect (G, 65.258219, 87.939699, 76.682322, 70.351763);
  184.   urect (G, 84.976526, 87.939699, 96.400629, 70.351763);
  185.   upset (G, "colo", 14.);
  186.   urect (G, 28.951487, 86.432162, 34.115808, 71.859301);
  187.   upset (G, "colo", 10.);
  188.   urect (G, 48.669797, 86.432162, 53.834115, 71.859301);
  189.   upset (G, "colo", 11.);
  190.   urect (G, 68.388109, 86.432162, 73.552431, 71.859301);
  191.   upset (G, "colo", 9.);
  192.   urect (G, 88.106417, 86.432162, 93.270739, 71.859301);
  193.   upset (G, "colo", 0.);
  194.   upset (G, "bcol", 7.);
  195.   centre (2, "°±² T E N   T H O U S A N D ²±°");
  196.   centre (11, "The semi-classic game of chance");
  197.   upset (G, "colo", 5.);
  198.   upset (G, "bcol", 0.);
  199.   centre (13, "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
  200.   upset (G, "colo", 6.);
  201.   centre (14, "Original programme by B.N. Randall");
  202.   centre (15, "Copyright (C)1986 Champion Wolf Software");
  203.   upset (G, "colo", 2.);
  204.   centre (16, "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
  205.   upset (G, "colo", 10.);
  206.   centre (17, "Amiga and MS-DOS ANSI C versions by D.R. Commander");
  207.   upset (G, "colo", 7.);
  208.   display (18, 24, "(E-Mail: ");
  209.   upset (G, "colo", 15.);
  210.   uprnt1 (G, "text", "drc76795@tree.egr.uh.edu");
  211.   upset (G, "colo", 7.);
  212.   uprnt1 (G, "text", ")");
  213.   upset (G, "colo", 11.);
  214.   centre (19, "(C)1995 Titane-Mammoth Productions");
  215.   upset (G, "colo", 3.);
  216.   centre (20, "GWIN system (C)1991 Howard C. Anderson");
  217.   upset (G, "colo", 1.);
  218.   centre (21, "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
  219. }
  220.  
  221. /*** CENTRE A STRING ON A SPECIFIED LINE ***/
  222. void 
  223. centre (int vpos, char input[])
  224. {
  225.   float x = 50. - (float) strlen (input) * 0.625, y = 96.0 - (float) ((vpos - 1) % 25) * 4.0;
  226.   umove (G, x, y);
  227.   uprnt1 (G, "text", input);
  228. }
  229.